package com.powerbank.admin.service;

import com.powerbank.admin.dto.AdminLoginDTO;
import com.powerbank.admin.vo.AdminLoginVO;

/**
 * 管理员认证服务接口
 */
public interface AdminAuthService {

    /**
     * 管理员登录
     *
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    AdminLoginVO login(AdminLoginDTO loginDTO);

    /**
     * 管理员登出
     *
     * @param token 访问令牌
     * @return 是否成功
     */
    boolean logout(String token);

    /**
     * 刷新Token
     *
     * @param token 当前Token
     * @return 新的登录信息
     */
    AdminLoginVO refreshToken(String token);

    /**
     * 获取当前登录管理员信息
     *
     * @param token 访问令牌
     * @return 管理员信息
     */
    AdminLoginVO getCurrentAdminInfo(String token);

    /**
     * 验证Token并获取管理员ID
     *
     * @param token 访问令牌
     * @return 管理员ID
     */
    Long validateTokenAndGetAdminId(String token);

    /**
     * 检查管理员权限
     *
     * @param adminId    管理员ID
     * @param permission 权限标识
     * @return 是否有权限
     */
    boolean hasPermission(Long adminId, String permission);
}